#include "Pthread.hpp"
#include <unordered_map>
#include <memory>

#define NUM 10
// using thread_ptr_t = shared_ptr<MyThread::Thread>;
void Count(int n)
{
    while (n--)
    {
        cout << n << endl;
    }
    
}
int main()
{

    MyThread::Thread<int> t(Count,10);
    t.Start();
    t.Join();
    // //创建多个线程
    // unordered_map<string,thread_ptr_t> threads;
    // for(int i = 0; i < NUM; i++)    
    // {
    //     thread_ptr_t t = make_shared<MyThread::Thread>([](){
    //         while (true)
    //         {
    //             cout << "hello word " <<endl;
    //             sleep(1);
    //         }
    //     });
    //     threads[t->Name()] = t;
    // }

    // for(auto& thread : threads)
    // {
    //     thread.second->Start();
    // }

    // for(auto& thread : threads)
    // {
    //     thread.second->Join();
    // }
    // MyThread::Thread t([](){
    //     while (true)
    //     {
    //         sleep(1);
    //         printf("hello\n");
    //     }
    // });   
    // t.Start();
    
    // cout << t.Name() << endl;
    // t.Join();
    
    return 0;
}




// // 线程函数
// void* printMessage(void* arg) {
//     std::cout << "Hello from thread!" << std::endl;
//     return nullptr;
// }

// int main() {
//     pthread_t thread;
//     // 创建线程
//     if (pthread_create(&thread, nullptr, printMessage, nullptr) != 0) {
//         std::cerr << "Failed to create thread" << std::endl;
//         return 1;
//     }
//     // 等待线程结束
//     if (pthread_join(thread, nullptr) != 0) {
//         std::cerr << "Failed to join thread" << std::endl;
//         return 1;
//     }
//     std::cout << "Main thread exiting" << std::endl;
//     return 0;
// }